package com.zw.mes.module.prodtaskmanager.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Calendar;
import java.util.Date;

/**
 * 总调计划（设备类）查询列表模型
 */
@Data
public class PlanQueryModel {
    /**
     * 项目编号
     */
    private String proCode;
    /**
     * 项目名称
     */
    private String proName;
    /**
     * 项目数量
     */
    private Integer proQty;
    /**
     * 安装地点
     */
    private String installationSite;
    /**
     * 需方
     */
    private String customer;
    /**
     * 生产令交货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date prodDelDat;
    /**
     * 是否重点：1=是，0=否
     */
    private Byte prodIsKey;
    /**
     * 生产令编号
     */
    private String prodNo;
    /**
     * 生产令数量
     */
    private Integer prodNum;
    /**
     * 设计完任务成状态 0=不需要 1=未开始 2=执行中 3=已完成
     */
    private Integer designStatus;
    /**
     * 设计任务完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date designCompleteDt;

    /**
     * 设计计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date designPlanDt;

    /**
     * 工艺完成状态 0=不需要 1=未开始 2=执行中 3=已完成
     */
    private Integer craftStatus;
    /**
     * 工艺完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date craftCompleteDt;

    /**
     * 外购件计划任务完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer purStatus;

    /**
     * 外购件计划任务完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date purCompleteDt;

    /**
     * 外购件计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date purPlanDt;

    /**
     * 外协件计划任务完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer outStatus;

    /**
     * 外协件计划任务完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date outCompleteDt;

    /**
     * 外协件计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date outPlanDt;

    /**
     * 原材料计划任务完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer rawMatStatus;
    /**
     * 生产令状态 1=正常 2=终止 3=暂缓
     */
    private Integer prodManSta;

    /**
     * 原材料计划任务完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rawMatCompleteDt;

    /**
     * 原材料计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rawMatPlanDt;

    /**
     * 工艺编制完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer processPlanningStatus;

    /**
     * 工艺编制完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date processPlanningCompleteDt;

    /**
     * 工艺编制计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date processPlanningPlanDt;

    /**
     * 下料完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer cutStatus;

    /**
     * 下料完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cutCompleteDt;

    /**
     * 下料计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cutPlanDt;

    /**
     * 返焊件完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer reflowWeldmentStatus;

    /**
     * 返焊件完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reflowWeldmentCompleteDt;

    /**
     * 返焊件计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reflowWeldmentPlanDt;

    /**
     * 机加件（铆焊）完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer rivetingAndWeldingOfMachiningPartsStatus;

    /**
     * 机加件（铆焊）完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rivetingAndWeldingOfMachiningPartsCompleteDt;

    /**
     * 机加件（铆焊）计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rivetingAndWeldingOfMachiningPartsPlanDt;

    /**
     * 铆焊件完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer rivetingAndWeldingPartsStatus;

    /**
     * 铆焊件完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rivetingAndWeldingPartsCompleteDt;
    /**
     * 铆焊件计划完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rivetingAndWeldingPartsPlanDt;

    /**
     * 机加完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer machiningStatus;

    /**
     * 机加完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date machiningCompleteDt;

    /**
     * 机加计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date machiningPlanDt;

    /**
     * 装配完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer assemblingStatus;

    /**
     * 装配完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date assemblingCompleteDt;

    /**
     * 装配计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date assemblingPlanDt;

    /**
     * 发货完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer deliverStatus;

    /**
     * 发货完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date deliverCompleteDt;

    /**
     * 发货计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date deliverPlanDt;

    /**
     * 安装完成状态 1=未开始，2=已执行 3=已完成
     */
    private Integer installStatus;

    /**
     * 安装完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date installCompleteDt;

    /**
     * 安装计划要求完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date installPlanDt;

    /**
     * 交货时间开始时间
     */
    private Date delStartTime;
    /**
     * 交货时间结束时间
     */
    private Date delEndTime;
    public void setDelEndTime(Date delEndTime) {
        if (delEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(delEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.delEndTime = cal.getTime();
        }
    }

    /**
     * 技术下达完成时间开始时间
     */
    private Date designStartTime;
    /**
     * 交技术下达完成时间结束时间
     */
    private Date designEndTime;
    public void setDesignEndTime(Date designEndTime) {
        if (designEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(designEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.designEndTime = cal.getTime();
        }
    }
    /**
     * 工艺下计划完成时间开始时间
     */
    private Date craftStartTime;
    /**
     * 工艺下计划完成时间结束时间
     */
    private Date craftEndTime;
    public void setCraftEndTime(Date craftEndTime) {
        if (craftEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(craftEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.craftEndTime = cal.getTime();
        }
    }
    /**
     * 外购件计划完成时间开始时间
     */
    private Date purStartTime;
    /**
     * 外购件完成时间结束时间
     */
    private Date purEndTime;
    public void setPurEndTime(Date purEndTime) {
        if (purEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(purEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.purEndTime = cal.getTime();
        }
    }
    /**
     * 外协件计划完成时间开始时间
     */
    private Date outStartTime;
    /**
     * 外协件完成时间结束时间
     */
    private Date outEndTime;
    public void setOutEndTime(Date outEndTime) {
        if (outEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(outEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.outEndTime = cal.getTime();
        }
    }
    /**
     * 原材料计划完成时间开始时间
     */
    private Date rawMatStartTime;
    /**
     * 原材料完成时间结束时间
     */
    private Date rawMatEndTime;
    public void setRawMatEndTime(Date rawMatEndTime) {
        if (rawMatEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(rawMatEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.rawMatEndTime = cal.getTime();
        }
    }
    /**
     * 工艺编制完成时间开始时间
     */
    private Date processPlanningStartTime;
    /**
     *工艺编制完成时间结束时间
     */
    private Date processPlanningEndTime;
    public void setProcessPlanningEndTime(Date processPlanningEndTime) {
        if (processPlanningEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(processPlanningEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.processPlanningEndTime = cal.getTime();
        }
    }
    /**
     * 下料完成时间开始时间
     */
    private Date cutStartTime;
    /**
     *下料完成时间结束时间
     */
    private Date cutEndTime;
    public void setCutEndTime(Date cutEndTime) {
        if (cutEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(cutEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.cutEndTime = cal.getTime();
        }
    }
    /**
     * 返焊件完成时间开始时间
     */
    private Date reflowWeldmentStartTime;
    /**
     * 返焊件完成时间结束时间
     */
    private Date reflowWeldmentEndTime;
    public void setReflowWeldmentEndTime(Date reflowWeldmentEndTime) {
        if (reflowWeldmentEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(reflowWeldmentEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.reflowWeldmentEndTime = cal.getTime();
        }
    }
    /**
     * 机加件（铆焊）完成时间开始时间
     */
    private Date rivetingAndWeldingOfMachiningPartsStartTime;
    /**
     * 机加件（铆焊）完成时间结束时间
     */
    private Date rivetingAndWeldingOfMachiningPartsEndTime;
    public void setRivetingAndWeldingOfMachiningPartsEndTime(Date rivetingAndWeldingOfMachiningPartsEndTime) {
        if (rivetingAndWeldingOfMachiningPartsEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(rivetingAndWeldingOfMachiningPartsEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.rivetingAndWeldingOfMachiningPartsEndTime = cal.getTime();
        }
    }
    /**
     * 铆焊件完成时间开始时间
     */
    private Date rivetingAndWeldingPartsStartTime;
    /**
     * 铆焊件完成时间结束时间
     */
    private Date rivetingAndWeldingPartsEndTime;
    public void setRivetingAndWeldingPartsEndTime(Date rivetingAndWeldingPartsEndTime) {
        if (rivetingAndWeldingPartsEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(rivetingAndWeldingPartsEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.rivetingAndWeldingPartsEndTime = cal.getTime();
        }
    }
    /**
     * 机加完成时间开始时间
     */
    private Date machiningStartTime;
    /**
     * 机加完成时间结束时间
     */
    private Date machiningEndTime;
    public void setMachiningEndTime(Date machiningEndTime) {
        if (machiningEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(machiningEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.machiningEndTime = cal.getTime();
        }
    }
    /**
     * 装配完成时间开始时间
     */
    private Date assemblingStartTime;
    /**
     * 装配完成时间结束时间
     */
    private Date assemblingEndTime;
    public void setAssemblingEndTime(Date assemblingEndTime) {
        if (assemblingEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(assemblingEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.assemblingEndTime = cal.getTime();
        }
    }
    /**
     * 发货完成时间开始时间
     */
    private Date deliverStartTime;
    /**
     * 发货完成时间结束时间
     */
    private Date deliverEndTime;
    public void setDeliverEndTime(Date deliverEndTime) {
        if (deliverEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(deliverEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.deliverEndTime = cal.getTime();
        }
    }
    /**
     * 发货完成时间开始时间
     */
    private Date installStartTime;
    /**
     * 发货完成时间结束时间
     */
    private Date installEndTime;
    public void setInstallEndTime(Date installEndTime) {
        if (installEndTime != null) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(installEndTime);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            this.installEndTime = cal.getTime();
        }
    }
}
